Cosense Code Clone
bsahd.icon
公開projectの場合
最初はclone
$ deno run -A --reload jsr:@bsahd/cosense-code-clone clone プロジェクト名
./{プロジェクト名}にクローンされる
必ずアクセスは./{プロジェクト名}のみの許可にしてください。そうでないとインジェクションによって重要なファイルが書き換えられることがあります。
最新バージョンで対応しました
pull
変更のあるページのみ再作成する
$ deno run -A --reload jsr:@bsahd/cosense-code-clone pull プロジェクト名
Cosenseから消えたページはファイル上には残る
また、Cosense上から消えたcodeblockも残る
非公開projectの場合
$ deno run --allow-write=./{格納先} --allow-read=./{格納先} jsr:@bsahd/cosense-code-clone json ファイル名 格納先
export json dataをもとに生成できるようにしたい
Cosense export JSON Dataの型定義ってある?
私も調べてたwbsahd.icon
push
構造
ページ名に/が入る場合、ファイルシステム上では階層構造になる
日記ページがちゃんと階層化される
コードブロック名ではされない(エスケープされる)ので注意
後は中で普通に#include "../ページ名/コードブロック名"すればいい
./scrapbox_temp/ページ名/コードブロック名形式になる
ページテキストは./scrapbox_temp/ページ名/text.txtにクローンされる
ページJSONは./scrapbox_temp/ページ名/json.jsonにクローンされる
ページHTMLは./scrapbox_temp/ページ名/text.htmlにクローンされる
Windows環境の場合、ページ名から: * ? " < > ? |はパーセントエンコードされる
パーセントエンコードの為%もエンコードされる
\ /は自動的に階層にする
ファイル名の場合は/と
書き込み失敗しても続きのページはしっかりとやる
/or\の前後に空白があると失敗する
複数のページからリンクされてても本文がなければ(薄くなっているなら)HTMLは生成されません
空ページの一覧のAPIあるのかな
だめだ。完全に静的サイトジェネレーターを目指してる
目次作る
頭文字ごとにアクセスできるようにする
1 hop linksだす
Cosense上のリンクがcase insensitiveなのに対しファイルシステムはcase sensitiveだ
workaround: apache httpdの場合はmod_spelingを使う
メリット
HTTP importに対応していない言語でも使える
お気に入りのpublic projectがローカルで読めるようになる
TODO
赤リンクを赤くする
本文がなくても被リンクがある場合はhtmlを生成する
0.4.0
COSENSESID環境変数を設定した場合、それをconnect.sidとして使う
依存関係のアップデート
0.2.0
/api/pages/villagepump?skip=〇〇より、/api/pages/villagepump/search/titlesの方が速いので修正
わかりやすい形式で保存する
リンク用にディレクトリ化されたコードブロックのファイルができる
名前の由来
Cosense Code: Cosense内のコードブロック
Clone: git cloneを意識してる
Cosenseをコードリポジトリとして使ってみたかった